const express = require('express');
const router = express.Router();
const pool = require('../DB/db'); // 引入数据库连接池

// 定义一个 GET 请求路由，用于获取数据库中的数据
router.get('/', async (req, res) => {
  // 定义查询语句
  const query = 'SELECT * FROM goods';
  // 使用数据库连接池执行查询语句
  const [rows] = await pool.execute(query);
  // 将查询结果以 JSON 格式响应给客户端
  res.json(rows);
});

// 获取对应商品id详情
router.get('/goodsDetails/:id', async (req, res) => {
  const productId = req.params.id;
  try {
    const [rows] = await pool.execute('SELECT * FROM goods WHERE id = ?', [productId]);
    if (rows.length === 0) {
      return res.status(404).json({ message: '未找到该商品' });
    }
    res.json(rows[0]);
  } catch (error) {
    console.error('查询商品信息时出错:', error);
    res.status(500).json({ message: '服务器内部错误' });
  }
});

// 商品添加购物车
router.post('/cart/add', async (req, res) => {
  try {
    const { Uid, name, description, image, category, buyNum, price } = req.body;
    // 检查 cart 表中是否存在相同商品 id 的记录
    const [rows] = await pool.execute('SELECT * FROM cart WHERE Uid = ?', [Uid]);
    if (rows.length > 0) {
      // 遍历已存在的记录
      for (let existingItem of rows) {
        if (existingItem.status === 'no') {
          // 如果结算状态为 no，更新购买数量
          const newBuyNum = parseInt(existingItem.buyNum, 10) + parseInt(buyNum, 10);
          await pool.execute(
            'UPDATE cart SET buyNum = ? WHERE id = ?',
            [newBuyNum, existingItem.id]
          );
          res.status(200).json({ message: '购物车商品数量已更新', id: existingItem.id });
          return;
        }
      }
      // 如果所有相同商品 id 的记录结算状态都是 yes，插入新记录
      const [result] = await pool.execute(
        'INSERT INTO cart (Uid, name, description, image, category, buyNum, price, status) VALUES (?,?,?,?,?,?,?,?)',
        [Uid, name, description, image, category, buyNum, price, 'no']
      );
      res.status(200).json({ message: '商品已加入购物车', id: result.insertId });
    } else {
      // 如果不存在，插入新记录
      const [result] = await pool.execute(
        'INSERT INTO cart (Uid, name, description, image, category, buyNum, price, status) VALUES (?,?,?,?,?,?,?,?)',
        [Uid, name, description, image, category, buyNum, price, 'no']
      );
      res.status(200).json({ message: '商品已加入购物车', id: result.insertId });
    }
  } catch (error) {
    console.error('加入购物车失败:', error);
    res.status(500).json({ message: '加入购物车失败' });
  }
});


// 获取购物车数据
router.get('/cart/getOrders', async (req, res) => {
  try {
    // 查询 cart 表中的所有订单数据
    const [rows] = await pool.execute('SELECT * FROM cart');
    res.status(200).json({ message: '获取订单数据成功', orders: rows });
  } catch (error) {
    console.error('获取订单数据失败:', error);
    res.status(500).json({ message: '获取订单数据失败' });
  }
});


// 删除选中购物车数据
router.post('/cart/deleteSelected', async (req, res) => {
  try {
    const { ids } = req.body;
    if (!ids || ids.length === 0) {
      return res.status(400).json({ message: '未提供要删除的商品 ID' });
    }
    const placeholders = ids.map(() => '?').join(',');
    const query = `DELETE FROM cart WHERE id IN (${placeholders})`;
    await pool.execute(query, ids);
    res.status(200).json({ message: '删除成功' });
  } catch (error) {
    console.error('删除失败:', error);
    res.status(500).json({ message: '删除失败' });
  }
});


// 结算购物车
// 结算选中的购物车商品接口
router.post('/cart/settleSelected', async (req, res) => {
  try {
    const { ids } = req.body;
    if (!ids || ids.length === 0) {
      return res.status(400).json({ message: '未提供要结算的商品 ID' });
    }
    const placeholders = ids.map(() => '?').join(',');
    const query = `UPDATE cart SET status = 'yes' WHERE id IN (${placeholders})`;
    await pool.execute(query, ids);
    res.status(200).json({ message: '结算成功' });
  } catch (error) {
    console.error('结算失败:', error);
    res.status(500).json({ message: '结算失败' });
  }
});


module.exports = router;